#include "consulta_analisis_det.h"

Consulta_Analisis_det::Consulta_Analisis_det(QWidget *parent):VentanaConsulta(parent)
{

    indiceBusqueda = 0;

    QDjango::setDebugEnabled(true);
    this->setWindowTitle("Consultar Análisis");

    modeloConsulta->setTable("analisis");

    modeloConsulta->setHeaderData(0,Qt::Horizontal,"Id");
    modeloConsulta->setHeaderData(1,Qt::Horizontal,"Nombre");
    modeloConsulta->setHeaderData(2,Qt::Horizontal,"Descripcion");
    modeloConsulta->setHeaderData(3,Qt::Horizontal,"Tipo_Analisis");
    modeloConsulta->setRelation(4, QSqlRelation("departamento", "id_departamento", "nombre_departamento"));
    modeloConsulta->setHeaderData(4,Qt::Horizontal,"Departamento");
    modeloConsulta->setHeaderData(5,Qt::Horizontal,"Estado");
    modeloConsulta->select();

    filtro->setSourceModel(modeloConsulta);

    ui->tableView->setModel(filtro);
    QStringList elementos;
    elementos << "Nombre" << "Tipo_Analisis";
    ui->comboBuscarPor->addItems(elementos);
    ui->tableView->setModel(filtro);
    ui->tableView->hideColumn(0);
    ui->tableView->hideColumn(5);
    ui->textoBusqueda->setPlaceholderText("Nombre");

    filtro->beginDeclareFilter();
    filtro->setFilter(5, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
    filtro->endDeclareFilter();
}

void Consulta_Analisis_det::on_registrar_clicked()
{
    Regmod_Analisis_det *regmodAnal = new Regmod_Analisis_det();
    regmodAnal->exec();
    delete regmodAnal;
}

void Consulta_Analisis_det::on_modificar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() == 1){
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);
        int id = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Analisis> analisis;
        Analisis *anal = analisis.filter(QDjangoWhere("id_analisis", QDjangoWhere::Equals, id)).at(0);

        Regmod_Analisis_det *modif = new Regmod_Analisis_det(this, anal);
        modif->exec();
        modeloConsulta->select();
        anal->deleteLater();
        delete modif;
    }
    else{
        cuadroMensaje("Debe seleccionar un Análisis", "");
    }
}

void Consulta_Analisis_det::on_eliminar_clicked()
{

    QModelIndexList indexes = obtenerIndicesSeleccionados(0);
    if(indexes.count() > 0) {
        QModelIndex index = indexes.at(0).sibling(indexes.at(0).row(), 0);

        int id = ui->tableView->model()->data(index).toInt();

        QDjangoQuerySet<Analisis> analisis;
        Analisis *anal = analisis.filter(QDjangoWhere("id_analisis", QDjangoWhere::Equals, id)).at(0);

        int resp = cuadroMensaje("<p align=center><b>Confirmar Cambios</b></p>", "<p align=center>Esta seguro de que desea dar de baja al analisis: " + anal->getNombre() + "?</p>", "advertencia");

        if(resp == QMessageBox::Ok){
            anal->setEstado("inactivo");
            anal->save();
            delete anal;
            modeloConsulta->select();
        }
    }
    else {
       cuadroMensaje("Debe seleccionar un Análisis", "");
    }
}

void Consulta_Analisis_det::on_textoBusqueda_textChanged(const QString &arg1)
{
    filtro->beginDeclareFilter();
    filtro->setFilter(indiceBusqueda, QVariant(arg1), Qt::DisplayRole, Qt::MatchContains);
    filtro->endDeclareFilter();
}

void Consulta_Analisis_det::on_comboBuscarPor_currentTextChanged(const QString &arg1)
{

    if(arg1 == "Nombre") indiceBusqueda = 1;
    else if(arg1 == "Tipo_Analisis") indiceBusqueda = 3;
    ui->textoBusqueda->setPlaceholderText(arg1);
}

void Consulta_Analisis_det::on_refrescarTabla_clicked()
{
    for(int i = 0;i<ui->tableView->model()->columnCount()-1;i++){
        filtro->removeFilter(i);
    }
    ui->comboBuscarPor->setCurrentIndex(0);
}

void Consulta_Analisis_det::on_checkActivos_toggled(bool checked)
{
    if(checked){
        filtro->beginDeclareFilter();
        filtro->setFilter(5, QVariant("activo"), Qt::DisplayRole, Qt::MatchExactly);
        filtro->endDeclareFilter();
    }
    else filtro->removeFilter(5);
}

void Consulta_Analisis_det::on_tableView_doubleClicked()
{
     Consulta_Analisis_det::on_modificar_clicked();
}
